;
(function() {
	//拓展数组的功能
	module.exports = {
		remove: function(arr, item) {
			return arr.filter(function(other_item) {
				return other_item !== item;
			});
		},
		isArray: function(maybeArray) {
			return maybeArray instanceof Array;
		},
		slice: function(likeArray) {
			return Array.prototype.slice.call(likeArray);
		},
		clearNull: function(arr) {
			return arr.filter(function(item) {
				if (item === undefined || item === null || item === "") {
					return false
				}
				return true;
			});
		},
		uniq: function(arr) {
			var a = [],
				o = {},
				i,
				v,
				cv, // corrected value
				len = arr.length;

			if (len < 2) {
				return arr;
			}

			for (i = 0; i < len; i++) {
				v = arr[i];

				/* closurecache 提供的函数中使用的是  cv = v + 0;，
				 * 这样就无法辨别类似[1, 10, "1", "10"]的数组，
				 * 因为运算后 => 1, 10, 10, 100，很明显，出现了重复的标示符。
				 * 加前面就难道没问题吗？
				 * 有的：数组中不能出现类似01 、001，以 0 开头的数字，
				 * 但适用性比原先更广。
				 */
				cv = 0 + v;

				if (!o[cv]) {
					a.push(v);
					o[cv] = true;
				}
			}

			return a;
		},
		toMap: function(arr, with_index) {
			var map = Object.create(null);
			arr.forEach(function(item, index) {
				map[item] = with_index ? index : true
			});
			return map;
		}
	}
}());